package jdbc;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/*
 * Clase que muestra como se carga una clase en memoria, igual que el
 * Class.forName que carga los drivers
 */

public class Main {

    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, IllegalArgumentException, InvocationTargetException {
        String s;
        Class c = Class.forName("java.lang.String");
        Class c2 = String.class;
        Class c3 = new String().getClass();
        for (Method m : c.getMethods()) {
            System.out.println(m.getName());
        }

        Object o = c.newInstance();
        Method m = c.getMethod("compareTo", String.class);

        Object resultado = m.invoke(o, "");
        System.out.println(resultado);

        Class.forName("jdbc.UnaClase");
        UnaClase uc = new UnaClase();
        UnaClase uc2 = new UnaClase();
        UnaClase uc3 = new UnaClase();
    }
}

class UnaClase {

    {
        System.out.println("un objeto");
    }

    public UnaClase() {
        System.out.println("constructor");
    }

    static {
        System.out.println("UnaClase!!!!!");
    }
}
